/*
 * @Author: Aro
 * @Date: 2021-10-10 11:18:34
 */

// 实现 pow(x, n) ，即计算 x 的 n 次幂函数（即，xn）。

/**
 * @param {number} x
 * @param {number} n
 * @return {number}
 */

// 快速幂算法 分治
var quick_calc = function(x, n) {
  if (n === 0) {
    return 1;
  }
  var y = quick_calc(x, Math.floor(n/2));
  return n%2 === 0 ? y*y : y*y*x;
}

var myPow = function(x, n) {
  return n >= 0 ? quick_calc(x, n) : 1/quick_calc(x, -n);
};

console.log("====== start ======");

let test1 = myPow(2.10000, 3); // 9.261000000000001
// 在leetcode上通过了测试用例 但是实际运算中会出现如上问题
// 可以通过BigNumber.js之类的插件解决
console.log(test1);

console.log("====== end ======");
